<?php

include_once '../model/Categoria.php';
include_once '../daos/CategoriaDao.php';
include_once '../commons/Constants.php';

class CategoriaController {

    public function __construct() {
        
    }

    public function listar() {

        session_start();

        $msj = "Error consultando las categorias, por favor intente más tarde";
        $view = "../views/categorias.php";

        try {
            $dao = new CategoriaDao();

            $listaCategorias = array();
            $listaCategorias = $dao->getCategorias();

            $msj = "";
            $_SESSION['listaCategorias'] = null;
            if (isset($listaCategorias) && count($listaCategorias) > 0) {
                $_SESSION['listaCategorias'] = serialize($listaCategorias);
            }

            unset($_SESSION['categoria']);
        } catch (Exception $e) {
            
        }

        $_SESSION['msj'] = $msj;
        return $view;
    }

    public function save() {

        session_start();

        $msj = "Error salvando la categoria";
        $estatus = AJAX_ERROR;
        $id = 0;

        try {
            $dao = new CategoriaDao();

            $categoria = new Categoria();
            $categoria->setId($_POST['id']);
            $categoria->setDescripcion(strtoupper($_POST['nombre']));

            $copy = $dao->getCatByName($categoria->getDescripcion());
            if ($categoria->getId() == 0) {

                if ($copy != null) {
                    $msj = "La categoria ya existe, por favor verifique";
                    $categoria = null;
                } else {
                    $categoria = $dao->saveCategoria($categoria);
                }
            } else {
                if ($copy != null && $copy->getId() != $categoria->getId()) {
                    $msj = "La categoria ya existe, por favor verifique";
                    $categoria = null;
                } else {
                    $categoria = $dao->updateCat($categoria);
                }
            }

            if (isset($categoria) && $categoria->getId() > 0) {
                $msj = "Constructora salvada satisfactoriamente";
                $estatus = AJAX_SUCCESSFUL;
                $id = $categoria->getId();
            }
        } catch (Exception $e) {
            
        }

        $responce = array('msj' => $msj, 'estatus' => $estatus, 'id' => $id);

        return json_encode($responce);
    }

    public function query() {

        session_start();

        $responce = array('msj' => "Error consultando la categoria", 'estatus' => AJAX_ERROR);

        try {
            $dao = new CategoriaDao();

            $categoria = new Categoria();
            $categoria = $dao->getCatById($_POST['id']);

            if (isset($categoria)) {
                $responce = array('msj' => "",
                    'estatus' => AJAX_SUCCESSFUL,
                    'id' => $categoria->getId(),
                    'nombre' => $categoria->getDescripcion());
            }
        } catch (Exception $e) {
            
        }

        return json_encode($responce);
    }

    public function delete() {

        session_start();

        $msj = "Error eliminando la categoria";
        $estatus = AJAX_ERROR;

        try {
           $dao = new CategoriaDao();

            $categoria = new Categoria();
            $categoria = $dao->getCatById($_POST['id']);

            if (isset($categoria)) {
                $result = $dao->deleteCat($categoria);

                if ($result) {
                    $msj = "Categoria eliminada satisfactoriamente";
                    $estatus = AJAX_SUCCESSFUL;
                }
            }
        } catch (Exception $e) {
            
        }

        $responce = array('msj' => $msj, 'estatus' => $estatus);

        return json_encode($responce);
    }
}

?>